package com.gkd.controller;

import com.gkd.common.QueryPageParam;
import com.gkd.common.Result;
import com.gkd.mapper.GoodsTypeMapper;

import com.gkd.pojo.GoodsType;
import com.gkd.pojo.GoodsTypePage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
@RestController
public class GoodsTypeController {
    @Autowired
    private GoodsTypeMapper goodsTypeMapper;

    //分页列表
    @PostMapping("/listGoodsTypePage")
    public Result listGoodsTypePage(@RequestBody QueryPageParam query) {
        int pageNum = query.getPageNum() - 1;
        int pageSize = query.getPageSize();

        List<GoodsType> goodsTypes = goodsTypeMapper.getPageGoodsType(pageNum * pageSize, pageSize);
        if (goodsTypes != null) {
            return Result.result(200, "获取数据成功", goodsTypeMapper.getAllGoodsType().size(), goodsTypes);
        }
        return Result.fail();
    }

    //新增数据
    @PostMapping("/addGoodsType")
    public Result addGoodsType(@RequestBody GoodsType goodsType) {
        GoodsType isGoodsType = goodsTypeMapper.getByNameGoodsTypeOne(goodsType.getName());
        if (isGoodsType != null) {
            //如果用户已经存在
            return Result.addFail(goodsTypeMapper.getAllGoodsType().size(), "物品已存在");
        }

        int i = goodsTypeMapper.addGoodsType(goodsType);
        if (i > 0) {
            return Result.addSuc(goodsTypeMapper.getAllGoodsType().size());
        }
        return Result.addFail(goodsTypeMapper.getAllGoodsType().size(), "新增物品失败");
    }

    //删除数据
    @PostMapping("/deleteGoodsType")
    public Result deleteStorage(@RequestBody GoodsType goodsType) {
        int id = goodsType.getId();
        int i = goodsTypeMapper.deleteGoodsType(id);
        if (i > 0) {
            return Result.deleteSuc(goodsTypeMapper.getAllGoodsType().size());
        }
        return Result.deleteFail(goodsTypeMapper.getAllGoodsType().size());
    }

    //修改数据
    @PostMapping("/updateGoodsType")
    public Result updateGoodsType(@RequestBody GoodsType goodsType) {
        GoodsType byIdGoodsType = goodsTypeMapper.getByIdGoodsType(goodsType.getId());

        GoodsType isGoodsType = goodsTypeMapper.getByNameGoodsTypeOne(goodsType.getName());
        if (!goodsType.getName().equals(byIdGoodsType.getName()) && isGoodsType != null) {
            //如果仓库已经存在
            return Result.updateFail(goodsTypeMapper.getAllGoodsType().size(), "物品已存在");
        }
        int i = goodsTypeMapper.updateGoodsType(goodsType);
        if (i > 0) {
            return Result.updateSuc(goodsTypeMapper.getAllGoodsType().size());
        }
        return Result.updateFail(goodsTypeMapper.getAllGoodsType().size(), "修改物品失败");
    }

    //模糊查询
    @PostMapping("/likeGoodsTypePage")
    public Result likeGoodsTypePage(@RequestBody GoodsTypePage goodsTypePage) {
        int pageNum = goodsTypePage.getPageNum() - 1;
        int pageSize = goodsTypePage.getPageSize();

        String name = goodsTypePage.getName();
        if (!name.equals("")) {
            List<GoodsTypePage> goodsTypePages = goodsTypeMapper.getByNamePageGoodsType(name, pageNum * pageSize, pageSize);
            return Result.result(200, "查询物品成功", goodsTypeMapper.getByNameGoodsType(name).size(), goodsTypePages);
        }
        return Result.fail();
    }
}
